// 一般工具类的放到utils文件夹
// request 专门提炼发送请求的函数
import axios from "axios";
import qs from 'qs';

// 创建实例对象
/* const request = axios.create({
    baseURL:''
}) */
// 测试使用的自己写的服务器
// 路径基础路径和url
//  http://你自己电脑的ip地址:8000
// 在cmd中执行ipconfig  查找ip4
// http://localhost:8000
// 一台电脑上的一个端口号只能运行一个项目
const request = axios.create({
    timeout:1000
});
request.defaults.baseURL = 'http://localhost:8000';
// 封装函数 axios
// method url  params参数（可以是url 可以是请求体的参数） headType(是那种数据 主要form)
function ajax({method='get',url,params,headType}){
    // data作用为了把params中的数据进行处理拿到合适格式放到 request(axios实例对象的配置对象data中)
    let data = {};

    if(method.toLowerCase() == 'post'){
        if(headType == 'form'){
            request.defaults.headers['content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
            data = qs.stringify(params);
        }else {
            request.defaults.headers['content-Type'] = 'application/json;charset=utf-8';
            data = params;
        }
    }
    if(method.toLowerCase()=='get'){
        if(headType == 'form'){
            request.defaults.headers['content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
        }
        url = url + '?' + qs.stringify(params);
        // params作为参数对象传递过来 key=value&key=value
        // qs包 把对象变为 key=value&key=value  序列化
        // npm i -S qs

    }
    // 请求拦截器
    request.interceptors.request.use(config=>{
        console.log('请求拦截器')
        console.log(config);
        return config
    });
    // 响应拦截器
    request.interceptors.response.use(data=>{
        console.log('响应拦截')
        console.log(data);
        
        return data
    })
    return new Promise((resolve,reject)=>{
        request({
            method,
            url,//url ?key=value&key=value
            /* transformRequest:[(req)=>{
                console.log('transformrequest')
                console.log(req);
                return req
            }],
            transformResponse:[(res)=>{
                console.log('transformresponse')
                console.log(res);
                return res
            }], */
            // params,
            data//form 请求序列化 key=value&key=value   普通{}
        }).then(res=>{
            resolve(res);
        }).catch(err=>{
            reject(err);
        })
    })

    
}
export default ajax;

